package pattern15;

/**
 * 组合对象的声明接口，在适当的情况下，实现所有类的公共接口的默认行为
 * @author wdl
 */
public abstract class BaseComponent {
    protected String name;

    public BaseComponent(String name) {
        this.name = name;
    }

    /**
     * 增加功能
     * @param component 组合对象
     */
    public abstract void add(BaseComponent component);

    /**
     * 移除功能
     * @param component 组合对象
     */
    public abstract void remove(BaseComponent component);

    /**
     * 显示功能
     * @param depth 深度
     */
    public abstract void display(int depth);
}
